home *** CD-ROM | disk | FTP | other *** search
/ T&A 2 the Maxx 3 / T and A 2 The Maxx Number 3.iso / viewers / unixview / xgl17dta.z / xgl17dta / grasp.h < prev    next >
C/C++ Source or Header  |  1991-07-24  |  6KB  |  275 lines

  1. #ident "@(#)grasp.h    1.10 91/04/03 XGRASP"
  2. /*-
  3.  * grasp.h - random collection of defines and structures...
  4.  *
  5.  * Copyright (c) 1991 by Patrick J. Naughton
  6.  *
  7.  * Permission to use, copy, modify, and distribute this software and its
  8.  * documentation for any purpose and without fee is hereby granted,
  9.  * provided that the above copyright notice appear in all copies and that
  10.  * both that copyright notice and this permission notice appear in
  11.  * supporting documentation.
  12.  *
  13.  * This file is provided AS IS with no warranties of any kind.  The author
  14.  * shall have no liability with respect to the infringement of copyrights,
  15.  * trade secrets or any patents by this file or any part thereof.  In no
  16.  * event will the author be liable for any lost revenue or profits or
  17.  * other special, indirect and consequential damages.
  18.  *
  19.  * Comments and additions should be sent to the author:
  20.  *
  21.  *                     Patrick J. Naughton
  22.  *                     Sun Microsystems
  23.  *                     2550 Garcia Ave, MS 10-20
  24.  *                     Mountain View, CA 94043
  25.  *                     (415) 336-1080
  26.  *
  27.  */
  28.  
  29. #include <stdio.h>
  30. #include <ctype.h>
  31. #include <string.h>
  32. #include <X11/Xlib.h>
  33. #include <X11/Xutil.h>
  34.  
  35. extern char *pname;
  36. extern int  imageloop;
  37. extern int  showdirectory;
  38. extern int  showtext;
  39. extern int  printthecodes;
  40. extern int  verbose;
  41. extern int  imverbose;
  42. extern Display *dsp;
  43. extern Window win;
  44. extern Visual *vis;
  45. extern XVisualInfo vinfo;
  46. extern int  screen;
  47. extern int  planes;
  48. extern GC   gc;
  49. extern GC   gc1;
  50. extern long white;
  51. extern long black;
  52. extern int  currentcolor;
  53. extern Atom protocol_atom;
  54. extern Atom kill_atom;
  55. extern XRectangle window;
  56. extern u_int GetByte();
  57. extern u_int GetWord();
  58. extern u_int GetLong();
  59. extern Colormap CreateEGAcmap();
  60. extern int  videomode;
  61. extern int  spacegap;
  62. extern int  chargap;
  63. extern void lowerstr();
  64. extern char *strdup();
  65.  
  66. #define NOTOKEN        0
  67. #define BOX        1
  68. #define BREAK        2
  69. #define CALL        3
  70. #define CFADE        4
  71. #define CFREE        5
  72. #define CGETBUF        6
  73. #define CHGCOLOR    7
  74. #define CIRCLE        8
  75. #define CLEARSCR    9
  76. #define CLOAD        10
  77. #define CLOSEGL        11
  78. #define COLOR        12
  79. #define CYCLE        13
  80. #define DATA        14
  81. #define DATABEGIN    15
  82. #define DATAEND        16
  83. #define DATASKIP    17
  84. #define DFREE        18
  85. #define DLOAD        19
  86. #define EDGE        20
  87. #define ELSE        21
  88. #define ENDLFLOAT    22
  89. #define ENDIF        23
  90. #define EXEC        24
  91. #define EXIT        25
  92. #define FFREE        26
  93. #define FGAPS        27
  94. #define FLOAD        28
  95. #define FLOAT        29
  96. #define FLY        30
  97. #define FONT        31
  98. #define FSTYLE        32
  99. #define GETCOLOR    33
  100. #define GETKEY        34
  101. #define GOSUB        35
  102. #define GOTO        36
  103. #define IF        37
  104. #define IFKEY        38
  105. #define IFMEM        39
  106. #define IFMOUSE        40
  107. #define IFVIDEO        41
  108. #define INT        42
  109. #define LINE        43
  110. #define LINK        44
  111. #define LOCAL        45
  112. #define LOOP        46
  113. #define MARK        47
  114. #define MERGE        48
  115. #define MODE        49
  116. #define MOUSE        50
  117. #define MOVE        51
  118. #define NOISE        52
  119. #define NOTE        53
  120. #define OFFSET        54
  121. #define OPENGL        55
  122. #define OUT        56
  123. #define PALETTE        57
  124. #define PAN        58
  125. #define PFADE        59
  126. #define PFREE        60
  127. #define PGETBUF        61
  128. #define PLOAD        62
  129. #define PNEWBUF        63
  130. #define POINT        64
  131. #define POKE        65
  132. #define POKEL        66
  133. #define POKEW        67
  134. #define POP        68
  135. #define POSITION    69
  136. #define PSAVE        70
  137. #define PSETBU        71
  138. #define PUTDFF        72
  139. #define PUTUP        73
  140. #define REC        74
  141. #define RESETGL        75
  142. #define RESETSCR    76
  143. #define RETURN        77
  144. #define REVPAGE        78
  145. #define SEND        79
  146. #define SET        80
  147. #define SETCOLOR    81
  148. #define SETPAGE        82
  149. #define SETRGB        83
  150. #define SETUPSCR    84
  151. #define SPLIT        85
  152. #define SPREAD        86
  153. #define TEXT        87
  154. #define TILE        88
  155. #define TIMER        89
  156. #define TRAN        90
  157. #define VIDEO        91
  158. #define WAITKEY        92
  159. #define WHEN        93
  160. #define WINDOW        94
  161. #define FADE        95
  162. #define WAIT        96
  163. #define NTOKENS        WAIT+1
  164. #define ARG        128
  165. #define INTEGER        ARG+1
  166. #define STRING        ARG+2
  167. #define IMAGE        ARG+3
  168. #define FONTTYPE    ARG+4
  169. #define EXECTYPE    ARG+5
  170. #define WILDTYPE    ARG+6
  171.  
  172.  
  173. typedef struct {
  174.     char       *name;
  175.     int         type;
  176.     int         w;
  177.     int         h;
  178.     int         d;
  179.     int         xoff;
  180.     int         yoff;
  181.     Pixmap      pix;
  182.     Colormap    cmap;
  183.     int         cmaplen;
  184.     XColor      colors[256];
  185. }           ImageStruct;
  186.  
  187. typedef struct {
  188.     Pixmap      pix;
  189.     int         width;
  190.     int         lbearing;
  191. }           GlyphStruct;
  192.  
  193. typedef struct {
  194.     char       *name;
  195.     int         width;
  196.     int         height;
  197.     GlyphStruct glyphs[256];
  198. }           FontStruct;
  199.  
  200. typedef struct {
  201.     char        fname[14];
  202.     long        offset;
  203. }           FilenameStruct;
  204.  
  205. typedef struct {
  206.     int         token;
  207.     union {
  208.     char       *s;
  209.     int         i;
  210.     ImageStruct *image;
  211.     FontStruct *font;
  212.     struct execStruct *exec;
  213.     }           val;
  214. }           ExecAtom;
  215. #define MAXCODES 10240
  216.  
  217. typedef struct {
  218.     char       *string;
  219.     int         ipaddr;
  220. }           LabelStruct;
  221. #define MAXLABELS 512
  222.  
  223. typedef struct execStruct {
  224.     char       *name;
  225.     int         numcodes;
  226.     ExecAtom    Code[MAXCODES];
  227.     int         numlabels;
  228.     LabelStruct label[MAXLABELS];
  229.     int         currentdataptr;
  230.     int         currentdataend;
  231.     int         ip;
  232.     char       *txt;
  233. }           ExecStruct;
  234.  
  235. extern char *tokens[];
  236.  
  237. #define MAXIMAGES 256
  238. extern ImageStruct *image[MAXIMAGES];
  239. extern int  numimages;
  240.  
  241. #define MAXFONTS 16
  242. extern FontStruct *font[MAXFONTS];
  243. extern int  numfonts;
  244.  
  245. #define MAXEXECS 16
  246. extern ExecStruct *exec[MAXEXECS];
  247. extern int  numexecs;
  248.  
  249. #define MAX(a,b) ((a)>(b)?(a):(b))
  250. #define MIN(a,b) ((a)<(b)?(a):(b))
  251.  
  252. /* EGA palette is 6 bit direct color, byte encoded
  253.  * _________________________________
  254.  * | x | x | r | g | b | R | G | B |
  255.  * ---------------------------------
  256.  * where r == "1 part red" and R == "2 parts red", and x's are ignored.
  257.  * where the 0-3 part sequence is 0, 85, 170, 255.
  258.  */
  259. #define decodepal(pal, one, two) ((((pal)&(one))?85:0)+(((pal)&(two))?170:0))
  260.  
  261. extern u_short egapal[16][3];
  262. extern int  cgapal[3][6];
  263.  
  264. #define EXT_PIC 0
  265. #define EXT_PCX 1
  266. #define EXT_GIF 2
  267. #define EXT_PAL 3
  268. #define EXT_CLP 4
  269. #define EXT_SET 5
  270. #define EXT_FNT 6
  271. #define EXT_TXT 7
  272.  
  273. #define YFLIP(y) (picreg[0]->h-(1)-(y))
  274. #define YFLIPIM(y,im) (YFLIP(y)-(im)->h)
  275.